home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / util / cli / case.lha / Case / case.doc next >
Encoding:
Text File  |  1998-03-10  |  80.6 KB  |  2,154 lines

  1.  
  2. *****************************************************************************
  3. ** Case 2.4 - Filename Changer - by Erik Spåre (Parsec/Phuture 303) 980304 **
  4. **        Filematching routines by Anders Vedmar (Axehandle/PC303)         **
  5. *****************************************************************************
  6.  
  7.     A POEM
  8.  
  9.         A good night.
  10.         A good night for nothing, indeed.
  11.         Tonight nothing will happen, here I can code alone, no one
  12.             will disturb me.
  13.         Here I can code in peace and await my own dear death.
  14.         Here I can sit and think of the world, as if I was a part of
  15.             it, as if I meant something to somebody else.
  16.         As if there was a meaning with this short and boring life.
  17.  
  18.         (Originally in Swedish by Gunnar Lundkvist. Slightly modified.)
  19.  
  20.  
  21.  
  22.     EXCITING BACKGROUND STORY
  23.  
  24.         One day, when I was removing all uppercases (by hand) from a
  25.         few hundred modules on my harddrive, I thought to myself
  26.         (constantly): "Why haven't someone made a utility for this?"
  27.  
  28.         I can't be the only person to dislike long lists of filenames,
  29.         some uppercase, some lowercase, and some a little of both.
  30.         I decided to do the world a favour, I started to code on
  31.         Case...
  32.  
  33.  
  34.  
  35.     WHAT CAN CASE DO FOR YOU?
  36.  
  37.         Compare these two lists...
  38.  
  39.             MOD.OCEAN_LOADER_FIXED        mod.ocean_loader_fixed
  40.             Mod.Green beret               mod.green_beret
  41.             mod.CRYSTAL HAMMER            mod.crystal_hammer
  42.             DOC1                          mod.doc1
  43.             Hunters_moon                  mod.hunters_moon
  44.             MOD.SleepWalk                 mod.sleepwalk
  45.             MOD.(((nebulos)))             mod.nebulos
  46.             mod.CREAM OF THE EARTH        mod.cream_of_the_earth
  47.             MOD.telephone!!!              mod.telephone
  48.  
  49.         If you prefer the left one, or don't care, then this is not a
  50.         utility for you. (Maybe you are one of those who chat with
  51.         capital letters...) You must be a little of a perfectionist,
  52.         or a design-freak, to understand why the left list is so
  53.         *revaulting*
  54.  
  55.         In this case I used the following options to produce the right
  56.         list:
  57.  
  58.             Case -l -t -k -apmod modules:old/#?
  59.  
  60.         -l to make all chars lowercase, -t to transform the spaces to
  61.         underscores, -k to keep only the letters and numbers (thus
  62.         removing '(' and '!') and -apmod to Add the Prefix mod (if it
  63.         isn't there already).
  64.  
  65.         If you can see my point, but don't like the right list either,
  66.         then don't worry -- there is probably one or more options that
  67.         is more suitable to your taste...
  68.  
  69.  
  70.  
  71.     REQUIREMENTS
  72.  
  73.         OS2.04 or above (because of the filematching routines).
  74.  
  75.  
  76.  
  77.     CASE IS...
  78.  
  79.         100 % assembler
  80.         Freeware
  81.  
  82.  
  83.  
  84.     REMEMBER...
  85.  
  86.         "This should be in every man's c-directory."
  87.          / Axehandle.
  88.  
  89.  
  90.  
  91.     MORE USEFUL INFORMATION ABOUT CASE
  92.  
  93.         Usage: Case -<OPTIONS> [<FILEPATTERNS>] [ALL] [SHOWINFO]
  94.  
  95.         The options you specify must all start with the minus sign.
  96.         If there is an argument given after the option there must be
  97.         NO spaces between them. If there's several strings that can
  98.         be given, use comma to separate them. Still no spaces.
  99.         Everything that is written after the last -option and before
  100.         the optional keywords is assumed to be the filenames/
  101.         filepatterns. 
  102.  
  103.         If you don't write a file specification, #? will be used.
  104.  
  105.         Recognized as lowercase letters (thus possible to uppercase):
  106.             abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüý
  107.  
  108.         Recognized as uppercase letters (and possible to lowercase):
  109.             ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ
  110.  
  111.         And just recognized as a letter (not possible to lowercase):
  112.             ß
  113.  
  114.  
  115.  
  116.     LIST OF OPTIONS
  117.  
  118.         Here are all the options. They are sorted in four categories.
  119.         They will be explained in detail later.
  120.  
  121.         The caseing options
  122.  
  123.            -l        All Lowercase
  124.            -u        All Uppercase
  125.            -c        Change cases
  126.            -w        Each new Word uppercase
  127.            -f        First letter uppercase
  128.            -i        Ignore suffix and/or prefix when caseing
  129.            -I        Don't Ignore suffix and/or prefix when caseing
  130.  
  131.         The extention operations
  132.  
  133.            -a        Add specified prefix/suffix/extention
  134.            -r        Remove [specified] prefix/suffix/extention
  135.            -C        Change [given] pref/suff/ext to specified
  136.            -s        Swap prefix and/or suffix
  137.            -E        Ignore default extensions [only accept specified]
  138.            -e        Only accept default extentions [and specified]
  139.            -L        Set new prefix and/or suffix maxlength
  140.            -g        Give priority to prefix or suffix
  141.  
  142.         The string manipulation operations
  143.  
  144.            -t        Transform spaces to underscores
  145.            -T        Transform underscores to spaces
  146.            -d        Delete all the spaces [or only specified]
  147.            -D        Delete specified strings
  148.            -C        Change string 1 to string 2
  149.            -k        Keep letters, digits, some more [and specified]
  150.            -K        Keep A-Z, digits, some more [and specified]
  151.            -m        Mutilate chars with ASCI values exceeding 128 to 45-127
  152.            -a        Add head/tail string to filename
  153.            -r        Remove head/tail string from filename
  154.            -v        Vomit files to PC-format
  155.  
  156.         The remaining options
  157.  
  158.            -D        Disable env:caseopts file
  159.            -q        Be Quiet (only list errors)
  160.            -n        Neglect the directories
  161.            -b        Use a buffer when renaming (indirect)
  162.            -B        Don't use a buffer when renaming (direct)
  163.            -S        Simulate caseing, don't actually rename anything
  164.            --         Stop option parsing
  165.            ALL       To recurse into subdirs.
  166.            SHOWINFO  To show a list of all recognized extentions
  167.  
  168.         As a rule, if an option can be either on or off, the negative
  169.         form will be an uppercased letter, and the positive a lowercased.
  170.  
  171.  
  172.  
  173.     HOW CASE WORKS, ORDER OF EXECUTION...
  174.  
  175.         If Case is in indirect mode (which it is unless you use the -B
  176.         option) all matching files will be read to a buffer. If it is in
  177.         indirect mode, one matching file at a time will be cased.
  178.  
  179.             First the -C" option will be called. (Change strings)
  180.  
  181.             Then the -m option (mutilate).
  182.  
  183.         At this point, all found extentions will be stripped from the
  184.         filename, if this has not been disabled somehow. Most of the options
  185.         will not be given a chance to operate on the extentions from now on,
  186.         unless, of course, the option is only intended for extentions.
  187.  
  188.             The -l/u/f/w/c options are called. These may or may not affect
  189.             the extentions, depending on the settings. Note that the extention
  190.             specific variants of these options are not executed now.
  191.  
  192.             The -d option (delete spaces and/or specified chars)
  193.  
  194.             The -D option (delete strings).
  195.  
  196.             Next out is the -k (keep only letters and specified) or -K option
  197.             (keep only a-z and specified); only one of these can be called
  198.             per session, for obvious reasons...
  199.  
  200.         Now the filetype will be checked: is it a file or a directory?
  201.         If it's a directory, the following options will be skipped...
  202.  
  203.             The -C<%> option (change extention)
  204.  
  205.             The -r option (remove extention or head/tail string). Note that
  206.             this means that head/tail strings cannot be removed from
  207.             directory names.
  208.  
  209.             The -a option (add extention or head/tail string). Again, this
  210.             means that head/tail strings cannot be added to directory names.
  211.  
  212.             The -s option (swap prefix and/or suffix)
  213.  
  214.             And finally the extention specific variants of the -l/u/f/w/c
  215.             options are called.
  216.  
  217.         Now when the extention-specific operations have been performed there's
  218.         only one more operation left to do on both files and directories.
  219.  
  220.             It's the -v option (vomit files to PC format). Note that most of
  221.             what this option does has already been done, since it turns on a
  222.             bunch of other options. The only thing it does now is to truncate
  223.             the name and/or any recognized extentions.
  224.  
  225.         Finally all the extentions and head/tail strings are merged into one
  226.         single name. First I copy any found/added prefix, then add a header
  227.         string if that was desired (so no other options have actually a
  228.         chance to affect the header string you specified). Directly after
  229.         this the possibly modified filename, followed by a tailstring (same
  230.         thing with this) and the suffix.
  231.  
  232.         If the resulting filename differs from the source filename, the file
  233.         is renamed unless it's too long.
  234.  
  235.  
  236.  
  237.     THE ENV:CASEOPTS FILE
  238.  
  239.         Before Case starts to interprete the commandline, it will try
  240.         to load env:caseopts. If this file is found its contents are
  241.         interpreted just as the argument-line's are. Newlines will be
  242.         converted into spaces.
  243.  
  244.  
  245.  
  246.     RECOGNIZED EXTENTIONS
  247.  
  248.         Graphics extentions
  249.  
  250.             qt
  251.             avi, brs, iff, gif, jpg, mpg, raw, png
  252.             anim, ilbm, jpeg
  253.  
  254.         Music extentions
  255.  
  256.             xm
  257.             med, mod, mp3, p61, s3m
  258.             symmod
  259.  
  260.         Archive-related extentions
  261.  
  262.             gz, pp
  263.             arc, arj, bz2, dms, lha, lzx, tar, xpk, zip, zoo, tgz, lzh
  264.             gzip
  265.  
  266.         Programming-related extentions
  267.  
  268.             c, E, i, o, s
  269.             asm, c++, cpp, obj
  270.             rexx
  271.  
  272.         Text-related extentions
  273.  
  274.             pi
  275.             bbs, diz, doc, htm, lst, man, nfo, tex, txt
  276.             html, text
  277.             amiga, guide
  278.             readme
  279.             displayme
  280.  
  281.         Misc extentions
  282.  
  283.             bin, dat, env, exe
  284.             info
  285.             prefs
  286.  
  287.         I couldn't think of any more... If you miss one, then
  288.         complain to me and/or add it in the env:caseopts file
  289.         with -e<extention>.
  290.  
  291.  
  292.  
  293.     SYMBOLS USED IN THE SYNTAX
  294.         
  295.         []      Everything within brackets are optional.
  296.         (h|t)   Write either 'h' (for header string) or 't' (for
  297.                 tail string).
  298.         <%>     Short form for (s|p|e) (or (S|P|E), it doesn't matter), an
  299.                 extention specification. Use 's' (suffix), 'p' (prefix) or
  300.                 'e' for both.
  301.         <c>     Means a character. For example 'p' or '!'
  302.         <c>..   Means one or more characters, a = 'a' or abc = 'a','b','c'
  303.         <$>     Means a string. You usually don't have to enclose a string
  304.                 with single or double quotes, but sometimes it's a must.
  305.                 If you start it with a double quote, you must end it with
  306.                 a double quote. Same thing with single quotes.
  307.                 Valid strings: ab (ab), "1,3" (1,3), '# %' (# %),
  308.                 "'o'" ('o'), '/"\' (/"\), rab" (rab")
  309.                 Invalid strings: "hm'  'bla   oof,   """   '"'"'
  310.         <$>,..  Means that you must specify one or more strings, separated
  311.                 by commas. This is ok: "rab",'oof' and Case would
  312.                 interpretate it as the two strings rab and oof.
  313.         <#>     Denotes ONE digit, 1-9.
  314.  
  315.         I call a prefix something that precedes the filename with a dot,
  316.         for instance mod.#?
  317.         I call a suffix something that follows the filename with a dot,
  318.         for instance #?.txt
  319.         When I say extention I mean either a prefix or a suffix.
  320.  
  321.  
  322.  
  323. **********************************************************************
  324. **                        THE CASING OPTIONS                        **
  325. **                       (l, u, c, w, f, i, I)                      **
  326. **********************************************************************
  327.  
  328. -l  NAME        All lowercase
  329.  
  330.     SYNTAX      -l[<%>]
  331.  
  332.     ARGUMENTS   Give an extention specification if you only want
  333.                 this operation to affect prefixes and/or suffixes.
  334.  
  335.     TASK        Lowercase all the characters in a filename and/or
  336.                 its extentions.
  337.  
  338.     FUNCTION    All the names that match will be lowercased, including
  339.                 their prefixes and suffixes. If you don't want the
  340.                 extensions to be affected by this operation, use the
  341.                 -i option.
  342.  
  343.     AFFECTS     u, w, f, c, I, i
  344.  
  345.                 u   (All uppercase) -- Turned off
  346.                 w   (Each new word uppercase) -- Turned off
  347.                 f   (First letter uppercase) -- Turned off
  348.                 c   (Change cases) -- Turned off
  349.                 i(*)(Ignore suffix and/or prefix when caseing) -- turned off.
  350.                     Use this in conjunction with the -l option to
  351.                     perform the operation on the filename only.
  352.                 I(*)(Don't Ignore suffix and/or prefix when caseing) -- on.
  353.                     This is so that the extentions won't be stripped off
  354.                     the filename, before the caseing starts (as they
  355.                     are when the -w and -f options are executed).
  356.  
  357.                 (*) The -I and -i options are not touched when this mode
  358.                     is started as an extention operation only.
  359.  
  360.     EXAMPLE 1   Case   -l "mOd.DeT_VAR_en.PP"
  361.                 Target     ^^^^^^^^^^^^^^^^
  362.                 Result    "mod.det_var_en.pp"
  363.  
  364.     EXAMPLE 2   Case   -le "mOd.DeT_VAR_en.PP"
  365.                 Target      ^^^            ^^
  366.                 Result     "mod.DeT_VAR_en.pp"
  367.  
  368.  
  369.  
  370. -u  NAME        All uppercase
  371.  
  372.     SYNTAX      -u[<%>]
  373.  
  374.     ARGUMENTS   Give an extention specification if you only want
  375.                 this operation to affect prefixes and/or suffixes.
  376.  
  377.     TASK        Uppercase all the characters in a filename and/or
  378.                 its extentions.
  379.  
  380.     FUNCTION    All the names that match will be uppercased, including
  381.                 their prefixes and suffixes. If you don't want the
  382.                 extensions to be affected by this operation, use the
  383.                 -i option.
  384.  
  385.     AFFECTS     u, w, f, c, I, i
  386.  
  387.                 u   (All uppercase) -- Turned off
  388.                 w   (Each new word uppercase) -- Turned off
  389.                 f   (First letter uppercase) -- Turned off
  390.                 c   (Change cases) -- Turned off
  391.                 i(*)(Ignore suffix and/or prefix when caseing) -- turned off.
  392.                     Use this in conjunction with the -u option to
  393.                     perform the operation on the filename only.
  394.                 I(*)(Don't Ignore suffix and/or prefix when caseing) -- on.
  395.                     This is so that the extentions won't be stripped off
  396.                     the filename, before the caseing starts (As they
  397.                     are when the -w and -f options are executed).
  398.  
  399.                 (*) The -I and -i options are not touched when this mode
  400.                     is started as an extention operation.
  401.  
  402.     EXAMPLE 1   Case   -u "mOd.Ensam_GNU.pp"
  403.                 Target     ^^^^^^^^^^^^^^^^
  404.                 Result    "MOD.ENSAM_GNU.PP"
  405.                          
  406.     EXAMPLE 2   Case  -up "mOd.Ensam_GNU.pp"
  407.                 Target     ^^^
  408.                 Result    "MOD.Ensam_GNU.pp"
  409.  
  410.  
  411.  
  412. -c  NAME        Change cases
  413.  
  414.     SYNTAX      -c[<%>]
  415.  
  416.     ARGUMENTS   Give an extention specification if you only want
  417.                 this operation to affect prefixes and/or suffixes.
  418.  
  419.     TASK        Change cases on the characters in a filename and/or
  420.                 its extentions.
  421.  
  422.     FUNCTION    All the names that match will change cases, including
  423.                 the prefixes and suffixes. If you don't want the
  424.                 extensions to be affected by this operation, use the
  425.                 -i option.
  426.  
  427.     AFFECTS     l, u, w, f, I, i
  428.  
  429.                 l   (All lowercase) -- Turned off
  430.                 u   (All uppercase) -- Turned off
  431.                 w   (Each new word uppercase) -- Turned off
  432.                 f   (First letter uppercase) -- Turned off
  433.                 i(*)(Ignore suffix and/or prefix when caseing) -- turned off.
  434.                     Use this in conjunction with the -c option to
  435.                     perform the operation on the filename only.
  436.                 I(*)(Don't Ignore suffix and/or prefix when caseing) -- on.
  437.                     This is so that the extentions won't be stripped off
  438.                     the filename, before the caseing starts (As they
  439.                     are when the -w and -f options are executed).
  440.  
  441.                 (*) The -I and -i options are not touched when this mode
  442.                     is started as an extention operation.
  443.  
  444.     EXAMPLE 1   Case   -c "mOd.Ensam_GNU.pp"
  445.                 Target     ^^^^^^^^^^^^^^^^
  446.                 Result    "MoD.eNSAM_gnu.PP"
  447.                          
  448.     EXAMPLE 2   Case  -ce "mOd.Ensam_GNU.pp"
  449.                 Target     ^^^           ^^
  450.                 Result    "MoD.Ensam_GNU.PP"
  451.  
  452.  
  453.  
  454. -w  NAME        Each new word uppercase
  455.  
  456.     SYNTAX      -w[<%>]
  457.  
  458.     ARGUMENTS   Give an extention specification if you only want
  459.                 this operation to affect prefixes and/or suffixes.
  460.  
  461.     TASK        Uppercase the first letter in the filename's (and/or its
  462.                 extentions) every word, lowercase the rest. 
  463.  
  464.     FUNCTION    Every matching file will be stripped from its
  465.                 extensions, the remaining part will then be cased. The
  466.                 first letter in every word will be uppercased, all the
  467.                 other lowercased. New words are distinguished by a
  468.                 non-letter e.g a space, underscore, digit, questionmark
  469.                 etc (Characters not in the "recognized letters" list).
  470.                 The extentions are by default not affected.
  471.  
  472.     AFFECTS     l, u, f, c, i, I
  473.  
  474.                 l   (All lowercase) -- Turned off
  475.                 u   (All uppercase) -- Turned off
  476.                 f   (First letter uppercase) -- Turned off
  477.                 c   (Change cases) -- Turned off
  478.                 i(*)(Ignore suffix and/or prefix when caseing)  -- Turned on.
  479.                     This is so that the extentions will be stripped
  480.                     from the filename (when they are not ignored they
  481.                     remain with it), before the caseing starts. It
  482.                     looks (in my opinion) ugly when the extentions
  483.                     are treated as a word, and cased...
  484.                 I(*)(Don't Ignore suffix and/or prefix when caseing) -- off.
  485.                     The extentions are by default not included in
  486.                     the -w casing; if you want them to be, use this
  487.                     option.
  488.  
  489.                 (*) The -I and -i options are not touched when this mode
  490.                     is started as an extention operation.
  491.  
  492.     EXAMPLE 1   Case   -w "mod.lo!in_this222i am.pp"
  493.                 Target         ^^^^^^^^^^^^^^^^^
  494.                 Result    "mod.Lo!In_This222I Am.pp"
  495.  
  496.     EXAMPLE 2   Case  -ws "mod.lo!in_this222i am.pP"
  497.                 Target                           ^^
  498.                 Result    "mod.lo!in_this222i am.Pp"
  499.  
  500.  
  501.  
  502. -f  NAME        First letter uppercase
  503.  
  504.     SYNTAX      -f[<%>]
  505.  
  506.     ARGUMENTS   Give an extention specification if you only want
  507.                 this operation to affect prefixes and/or suffixes.
  508.  
  509.     TASK        Uppercase the first found letter in the filename (and/or
  510.                 its extentions), lowercase the rest.
  511.  
  512.     FUNCTION    Every matching file will be stripped from its
  513.                 extensions, the remaning part will then be cased. The
  514.                 first letter found will be uppercased, all the other
  515.                 lowercased. The extentions are by default not
  516.                 affected.
  517.  
  518.     AFFECTS     l, u, w, c, i, I
  519.  
  520.                 l   (All lowercase) -- Turned off
  521.                 u   (All uppercase) -- Turned off
  522.                 w   (Each new word uppercase) -- Turned off
  523.                 c   (Change cases) -- Turned off
  524.                 i(*)(Ignore suffix and/or prefix when caseing)  -- Turned on.
  525.                     This is so that the extentions will be stripped
  526.                     from the filename (when they are not ignored they
  527.                     remain with it), before the caseing starts. It
  528.                     looks (in my opinion) ugly when the extentions
  529.                     are treated as a word, and cased...
  530.                 I(*)(Don't Ignore suffix and/or prefix when caseing) -- off.
  531.                     The extentions are by default not included in
  532.                     the -w casing; if you want them to be, use this
  533.                     option.
  534.  
  535.                 (*) The -I and -i options are not touched when this mode
  536.                     is started as an extention operation.
  537.  
  538.     EXAMPLE 1   Case   -f "mod.lO!In_This222I Am.pp"
  539.                 Target         ^^^^^^^^^^^^^^^^^
  540.                 Result    "mod.Lo!in_this222i am.pp"
  541.  
  542.     EXAMPLE 2   Case  -fp "mOd.lO!In_This222I Am.pp"
  543.                 Target     ^^^
  544.                 Result    "Mod.lO!In_This222I Am.pp"
  545.  
  546.  
  547.  
  548. -i  NAME        Ignore suffix and/or prefix when caseing
  549.  
  550.     SYNTAX      -i[<%>]
  551.  
  552.     ARGUMENTS   s   Ignore suffixes only.
  553.                 p   Ignore prefixes only.
  554.                 e   or -i alone ignores both the suffixes and prefixes.
  555.  
  556.     TASK        To tell the -l/u/c options what to operate on.
  557.  
  558.     FUNCTION    The -i option is _only_ useful in conjunction with the
  559.                 -l/u/c options. When you use -i it will force the casing
  560.                 operations to operate on only the filename (and one
  561.                 extention, if requested). If you don't like the
  562.                 default fact that the -l/u/c options case the whole
  563.                 filenames, with extentions, use -i.
  564.  
  565.     AFFECTS     l, u, c, I
  566.                 l   (All lowercase) -- Will cause the -l casing to be
  567.                     conducted on only the filename (and possibly one
  568.                     extention).
  569.                 u   (All uppercase) -- As above.
  570.                 c   (Change cases) -- As above.
  571.                 I   (Don't ignore suffix and/or prefix) -- Turned off.
  572.  
  573.     EXAMPLE 1   Case -i -l  "MOD.INTO_PERSONA1.PP"
  574.                 Target           ^^^^^^^^^^^^^
  575.                 Result      "MOD.into_persona1.PP"
  576.  
  577.     EXAMPLE 2   Case -ip -l "MOD.INTO_PERSONA1.PP"
  578.                 Target           ^^^^^^^^^^^^^^^^
  579.                 Result      "MOD.into_persona1.pp"
  580.  
  581.     EXAMPLE 3   Case -is -u "mod.into_persona1.pp"
  582.                 Target       ^^^^^^^^^^^^^^^^^
  583.                 Result      "MOD.INTO_PERSONA1.pp"
  584.  
  585.  
  586.  
  587. -I  NAME        Don't ignore suffix and/or prefix when caseing
  588.  
  589.     SYNTAX      -I[<%>]
  590.  
  591.     ARGUMENTS   s   Don't ignore suffixes.
  592.                 p   Don't ignore prefixes.
  593.                 e   or -I alone will make sure that neither suffix nor
  594.                     prefix will be ignored.
  595.  
  596.     TASK        To tell the -f/w options what to operate on.
  597.  
  598.     FUNCTION    The -I option is, _only_ useful in conjunction with the -w/f
  599.                 options. When you use -I it will force the casing operations to
  600.                 operate on the filename, the prefix (-I, -IE or -IP) and/or
  601.                 the suffix (-I, -IE or -IS). If you don't like the default
  602.                 values of the w/f options, use -I.
  603.  
  604.     AFFECTS     w, f, i
  605.                 w   (Each new word uppercase) -- The extentions will
  606.                     be treated just as the filename, and the caseing
  607.                     thus conducted on the whole (or part of the whole,
  608.                     depending on the -I setting).
  609.                 f   (First letter uppercase) -- As above.
  610.                 i   (Ignore suffix and/or prefix) -- Turned off.
  611.  
  612.     EXAMPLE 1   Case -IE -w "MOD.TEARS_OF_THE_FOREST.PP"
  613.                 Target       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  614.                 Result      "Mod.Tears_Of_The_Forest.Pp"
  615.  
  616.     EXAMPLE 2   Case -Ip -f "MOD.TEARS_OF_THE_FOREST.PP"
  617.                 Target       ^^^^^^^^^^^^^^^^^^^^^^^
  618.                 Result      "Mod.tears_of_the_forest.PP"
  619.  
  620.     EXAMPLE 3   Case -Is -w "MOD.TEARS_OF_THE_FOREST.PP"
  621.                 Target           ^^^^^^^^^^^^^^^^^^^^^^
  622.                 Result      "MOD.Tears_Of_The_Forest.Pp"
  623.  
  624.  
  625.  
  626. **********************************************************************
  627. **                     THE EXTENTION OPERATIONS                     **
  628. **                     (a, r, C, s, E, e, L, g)                     **
  629. **********************************************************************
  630.  
  631. -a  NAME        Add specified prefix/suffix/extention
  632.  
  633.     SYNTAX      -a<%><$>
  634.  
  635.     ARGUMENTS   p   Add prefix
  636.                 s   Add suffix
  637.                 e   Add extention
  638.                 <$> Directly after the -a<%> (no space) is the name of
  639.                     the prefix/suffix/extention to add.
  640.  
  641.     TASK        To add an extention to the filename
  642.  
  643.     FUNCTION    The extention will be added to a name, if it does not
  644.                 exist already. If it does exist, but not exactly as
  645.                 specified, the extention name will be adjusted. Meaning,
  646.                 if you add `mod' and a name contains the prefix `MOD'
  647.                 it is renamed to the desired `mod'.
  648.  
  649.     NOTE        The specified extention will be added to the list of
  650.                 recognized extentions. If you use this option with -E it
  651.                 will not be recognized.
  652.  
  653.     AFFECTS     L   (Set new prefix and/or suffix maxlength) -- The
  654.                     extention options will change the maximum allowed
  655.                     length of an extention _if_ a specified one's
  656.                     length exceeds the current maxlength. Remember
  657.                     that the -L option is only used when the -e
  658.                     option is turned off (which it isn't unless you
  659.                     disable it by -E)
  660.                     
  661.     EXAMPLES    Case -apmod "mahlzeit"       => "mod.mahlzeit"
  662.                 Case -apmOd "mod.mahlzeit"   => "mOd.mahlzeit"
  663.                 Case -apmod "npu.mahlzeit"   => "mod.npu.mahlzeit"
  664.                 Case -apmod "mod.mahlzeit"   => [NO CHANGE]
  665.                 Case -aetxt "wonderland"     => "txt.wonderland.txt"
  666.                 Case -asTxT "wonderland.txt" => "wonderland.TxT"
  667.                 Case -aspp  "wonderland.txt" => "wonderland.txt.pp"
  668.                 Case -astxt "wonderland.txt" => [NO CHANGE]
  669.  
  670.  
  671.  
  672. -r  NAME        Remove [specified] prefix/suffix/extention
  673.  
  674.     SYNTAX      -r<%>[<$>]
  675.  
  676.     ARGUMENTS   p   Add prefix
  677.                 s   Add suffix
  678.                 e   Add extention
  679.                 <$> Directly after the -r<%> (no space) you can specify
  680.                     the name of the extention to remove.
  681.  
  682.     TASK        To remove an extention from the filename.
  683.  
  684.     FUNCTION    If no extention is specified, all (recognized) extentions
  685.                 will be removed. If you want to remove all extentions,
  686.                 regardless whether this program recognize them or not
  687.                 (like "prc.mymodule"), then you better use the -E
  688.                 option. (You may need the -L option as well). If you
  689.                 specify an extention, only files containing that extention
  690.                 will have it removed (the check is not case-sensitive).
  691.                 
  692.     NOTE        If you specify an extention it will be added to the list of
  693.                 recognized extentions. If you use this option with -E it
  694.                 will not be recognized.
  695.  
  696.     AFFECTS     L   (Set new prefix and/or suffix maxlength) -- The
  697.                     extention options will change the maximum allowed
  698.                     length of an extention _if_ a specified one's
  699.                     length exceeds the current maxlength. Remember
  700.                     that the -L option is only used when the -e
  701.                     option is turned off (which it isn't unless you
  702.                     disable it by -E)
  703.                     
  704.     EXAMPLES    Case -rpMOD "mod.mahlzeit"      => "mahlzeit"
  705.                 Case -rpmed "mod.mahlzeit"      => [NO CHANGE]
  706.                 Case -rp    "med.mahlzeit.lzx"  => "mahlzeit.lzx"
  707.                 Case -re    "med.mahlzeit.lzx"  => "mahlzeit"
  708.                 Case -rsTXT "wonderland.txt"    => "wonderland"
  709.                 Case -rstxt "wonderland.txt.pp" => [NO CHANGE]
  710.                 Case -rs    "wonderland.txt.pp" => "wonderland.txt"
  711.  
  712.  
  713.  
  714. -C  NAME        Change [given] pref/suff/ext to specified
  715.  
  716.     SYNTAX      -C<%>[<$>,]<$>
  717.  
  718.     ARGUMENTS   p   Change only prefixes
  719.                 s   Change only suffixes
  720.                 e   Change all extentions
  721.                 <$> If only one extention is given, it is assumed to be the
  722.                     target. If two are given, the first one is the source.
  723.  
  724.     TASK        To change extentions' names
  725.  
  726.     FUNCTION    If no source is specified: All recognized extentions will be
  727.                 changed to the destination.
  728.                 If a source is specified: Only the extentions that match the
  729.                 source (the first given extention) will be changed to the
  730.                 destination.
  731.  
  732.     NOTE        Any specified extentions will be added to the list of
  733.                 recognized extentions. If you use this option with -E they
  734.                 will not be recognized.
  735.  
  736.     AFFECTS     L   (Set new prefix and/or suffix maxlength) -- The
  737.                     extention options will change the maximum allowed
  738.                     length of an extention _if_ a specified one's
  739.                     length exceeds the current maxlength. Remember
  740.                     that the -L option is only used when the -e
  741.                     option is turned off (which it isn't unless you
  742.                     disable it by -E)
  743.  
  744.     EXAMPLES    Case -Cpmed,mod   med.hummeln2.pp => mod.hummeln2.pp
  745.                 Case -CsPP,mod    med.hummeln2.pp => mod.hummeln2.mod
  746.                 Case -CpPP,mod    med.hummeln2.pp => [NO CHANGE]
  747.                 Case -Cemod       med.hummeln2.pp => mod.hummeln2.mod
  748.  
  749.  
  750.  
  751. -s  NAME        Swap prefix and/or suffix
  752.  
  753.     SYNTAX      -s[<%>]
  754.  
  755.     ARGUMENTS   p   Swap prefixes to suffixes.
  756.                 s   Swap suffixes to prefixes.
  757.                 e   or -s alone swaps both the suffix and prefix.
  758.  
  759.     TASK        To swap the extentions' positions.
  760.  
  761.     FUNCTION    Unless selected otherwise (with p or s) the recognized
  762.                 prefixes will be changed to suffixes and vice versa.
  763.  
  764.     AFFECTS     None
  765.  
  766.     EXAMPLES    Case -s  "pp.remix101.lfo.mod" => "mod.remix101.lfo.pp"
  767.                 Case -sp "pp.remix101.lfo.mod" => "remix101.lfo.mod.pp"
  768.                 Case -ss "pp.remix101.lfo.mod" => "mod.pp.remix101.lfo"
  769.  
  770.  
  771.  
  772. -E  NAME        Ignore default extensions [only accept specified]
  773.  
  774.     SYNTAX      -E[<$>,..]
  775.  
  776.     ARGUMENTS   <$> Directly after the -E it is possible to specify
  777.                     one or more extentions that will be the _only_
  778.                     recognized extentions.
  779.  
  780.     TASK        Change the criteria for extention recognition, forget
  781.                 the default extentions.
  782.  
  783.     FUNCTION    If no argument is given then Case will ignore its
  784.                 internal list of valid extentions and treat all 1-3
  785.                 letter strings (or more if specified) that is
  786.                 separated from the filename with "." as extentions.
  787.                 If one or more extention is specified after the -E,
  788.                 then _only_ those will be recognized.
  789.                 
  790.     AFFECTS     -e (Only accept default extentions) -- Turned off.
  791.  
  792.     EXAMPLE 1   Case -re "mod.remix101.lfo" => "remix101.lfo"
  793.                 Remove extentions. Only mod is recognized as an
  794.                 extention, and properly removed.
  795.  
  796.     EXAMPLE 2   Case -re -E "mod.remix101.lfo" => "remix101"
  797.                 Now both mod and lfo are recognized as extentions, and
  798.                 removed.
  799.  
  800.     EXAMPLE 3   Case -re -Elfo "mod.remix101.lfo" => "mod.remix101"
  801.                 This tells Case that the only valid extention is lfo,
  802.                 and as such it is removed.
  803.  
  804.  
  805.  
  806. -e  NAME        Only accept default extentions [and specified]
  807.  
  808.     SYNTAX      -e[<$>,..]
  809.  
  810.     ARGUMENTS   <$> Directly after the -e it is possible to specify
  811.                     one or more additional extentions to recognize.
  812.  
  813.     TASK        Change the criteria for extention recognition, always
  814.                 recognize the default extentions.
  815.  
  816.     FUNCTION    -e is used by default, so there is no point in
  817.                 writing it, unless -E is present in env:caseopts.
  818.                 It does not disable previous -e adds.
  819.                 All extentions specified after the -e is added to the
  820.                 list of recognized extentions. It is possible to
  821.                 add extentions with -e both in env:caseopts and the
  822.                 argument line.
  823.                 
  824.     AFFECTS     -E (Ignore default extensions) -- Turned off.
  825.  
  826.     EXAMPLE 1   Case -re "mod.remix101.lfo" => "remix101.lfo"
  827.                 Remove extentions. Only mod is recognized as an
  828.                 extention, and properly removed.
  829.  
  830.     EXAMPLE 2   Case -re -eprc,lfo "mod.remix101.lfo" => "remix101"
  831.                 Now both mod and lfo are recognized as extentions, and
  832.                 removed. The fictive extention prc would also have
  833.                 been removed if it had been found.
  834.  
  835.     EXAMPLE 3   Case -re -elfo "pco.remix101.lfo" => "pco.remix101"
  836.                 The suffix lfo is recognized and removed, the alien
  837.                 prefix pco is ignored.
  838.  
  839.  
  840.  
  841. -L  NAME        Set new prefix and/or suffix maxlength
  842.  
  843.     SYNTAX      -L[<%>]<#>
  844.  
  845.     ARGUMENTS   p   Only change the prefix maxlength.
  846.                 s   Only change the suffix maxlength.
  847.                 e   or -L<#> alone changes both the suffix & prefix maxlength.
  848.                 <#> A number between 1 and 9; the new maxlength.
  849.  
  850.     TASK        Change the criteria for extention recognition (if -E
  851.                 is used).
  852.  
  853.     FUNCTION    This is an option that will probably never be used by
  854.                 anyone. Nevertheless, this is what it does: First, it
  855.                 is _only_ consulted if the -E (ignore default
  856.                 extentions) mode is on. If it is, all 1-3 letter
  857.                 strings enclosing the filename with "." will be
  858.                 treated as extentions. The 3 letter limit (default)
  859.                 makes the recognition more safe. However, in some
  860.                 cases you may want to change the length, so that, for
  861.                 instance, strange 4-letter suffixes (not normally
  862.                 recognized by Case) can be removed or whatever. In
  863.                 Case 1.0 you needed to use this option if you removed
  864.                 specified 4-9 letters extentions, but lo! That is not
  865.                 necessary anymore. (The maxlength is now adjusted after
  866.                 the longest specified extention. Could that be a
  867.                 nuisance sometimes? I don't know, but if so, use
  868.                 -L after the extentions).
  869.  
  870.     AFFECTS     None
  871.  
  872.     EXAMPLE 1   Case -re -E -L4 "this.orthis" => "orthis"
  873.                 Remove extentions, ignore default extentions.
  874.                 `this' is 4 chars, and is treated as a prefix and
  875.                 properly removed.
  876.  
  877.     EXAMPLE 2   Case -re -E -L2 "mod.raveland.pp" => "mod.raveland"
  878.                 As example 1, but now the maximum allowed extention
  879.                 length is only 2 letters, so the prefix mod is
  880.                 ignored.
  881.  
  882.     EXAMPLE 3   Case -re -E -Lp6 "parsec.aha.parsec" => "aha.parsec"
  883.                 The prefixes are now allowed to be upto 6 letters,
  884.                 but not the suffixes, which are left untouched.
  885.  
  886.  
  887.  
  888. -g  NAME        Give priority to Prefix or Suffix
  889.  
  890.     SYNTAX      -g(p|s)
  891.  
  892.     ARGUMENTS   p   Give priority to the prefixes
  893.                 s   Give priority to the suffixes
  894.  
  895.     TASK        Tell what extention that has "the last word".
  896.  
  897.     FUNCTION    Sometimes a filename containing only one point (.) may
  898.                 nevertheless present two valid extentions. For
  899.                 instance a file called mod.txt would confuse Case, a
  900.                 little. Luckily it checks what extention that has the
  901.                 priority, and gives it authority to do whatever it
  902.                 pleases. By default the suffixes has the priority,
  903.                 because they are more common than the prefixes.
  904.                 However, the priority is changed each time you specify
  905.                 a suffix/prefix operation; for instance, if you tell
  906.                 Case to remove all prefixes, the priority will be
  907.                 given to them. Same with E, L, r, a... They give
  908.                 the priority to their own target. If you specify
  909.                 several of these, the last written is the last to
  910.                 change the priority. This is not the case with -g
  911.                 though, no matter where you write it, it will always
  912.                 give the priority you command. 
  913.  
  914.     AFFECTS     None
  915.  
  916.     EXAMPLE 1   Case -rp -rs "mod.pp" => "mod"
  917.                 The -rs is written last, the priority is given to the
  918.                 suffixes.
  919.  
  920.     EXAMPLE 2   Case -rs -rp "mod.pp" => "pp"
  921.                 Now the -rp was written last. Priority to the prefixes.
  922.  
  923.     EXAMPLE 3   Case -gs -rs -rp "mod.pp" => "mod"
  924.                 The -gs overrides the last priority change and the
  925.                 priority is given to the suffixes.
  926.  
  927.  
  928.  
  929. **********************************************************************
  930. **                THE STRING MANIPULATION OPERATIONS                **
  931. **                 (t, T, d, D, C, k, K, m, a, r, v)                **
  932. **********************************************************************
  933.  
  934. -t  NAME        Transform spaces to underscores
  935.  
  936.     SYNTAX      -t
  937.  
  938.     ARGUMENTS   None
  939.  
  940.     TASK        To connect words separated by spaces
  941.  
  942.     FUNCTION    All spaces in the filenames (recognized extentions not
  943.                 affected) will be transformed to underscores (_).
  944.  
  945.     AFFECTS     -T (Transform underscores to spaces) -- Turned off.
  946.  
  947.     EXAMPLE     Case -t "mod.one two  three" => "mod.one_two__three"
  948.  
  949.  
  950.  
  951. -T  NAME        Transform underscores to spaces
  952.  
  953.     SYNTAX      -T
  954.  
  955.     ARGUMENTS   None
  956.  
  957.     TASK        To replace underscores (_) by spaces.
  958.  
  959.     FUNCTION    All underscores in the filenames (recognized extentions
  960.                 not affected) will be transformed to spaces.
  961.  
  962.     AFFECTS     -t (Transform spaces to underscores) -- Turned off.
  963.  
  964.     EXAMPLE     Case -T "mod.one_two__three" => "mod.one two  three"
  965.  
  966.  
  967.  
  968. -d  NAME        Delete all the spaces [or only specified]
  969.  
  970.     SYNTAX      -d[<c>..]
  971.  
  972.     ARGUMENTS   <c> If you specify one or more characters, directly after the
  973.                     -d (no spaces), only these characters will be deleted.
  974.  
  975.     TASK        To compress several words into one, or strip ugly characters
  976.                 from the filenames.
  977.  
  978.     FUNCTION    If you write -d alone, all spaces in the filenames (recognized
  979.                 extentions not affected) will be deleted. If you specify one or
  980.                 more characters after the -d, _only_ those will be deleted.
  981.                 Spaces will in that case not be removed. If you want to delete
  982.                 both $ and spaces, you have to write -d -d$.
  983.  
  984.     NOTE        Characters written in one or more previous -r:s will be
  985.                 remembered.
  986.  
  987.     AFFECTS     None
  988.  
  989.     EXAMPLES    Case -d   "mod.one two  three" => "mod.onetwothree"
  990.                 Case -d() "mod.(((nebulos)))"  => "mod.nebulos"
  991.  
  992.  
  993.  
  994. -D  NAME        Delete specified string[s]
  995.  
  996.     SYNTAX      -D<$>,..
  997.  
  998.     ARGUMENTS   <$> The unwanted string or strings. If you specify several
  999.                     strings, separate them with commas (no spaces!). If you
  1000.                     want to include a comma or space, enclose the string with
  1001.                     single (') or double (") quoutes. If you want to remove
  1002.                     a string that begins with a single quoute, you must
  1003.                     enclose the whole string with double quoutes. Likewise, if
  1004.                     you want to remove a string that begins with a " you must
  1005.                     enclose the whole string with single quotes.
  1006.  
  1007.     TASK        To remove ugly/unwanted strings from the filenames.
  1008.  
  1009.     FUNCTION    The specified string(s) are removed from the filenames.
  1010.                 The search is not case-sensitive.
  1011.  
  1012.     NOTE        Strings written in a previous -D will _not_ be
  1013.                 remembered. In other words, it is not possible to
  1014.                 "add" more strings to remove.
  1015.  
  1016.     AFFECTS     None
  1017.  
  1018.     EXAMPLE     Case -D[lfo]     "mod.[LFO]delta_rave" => "mod.delta_rave"
  1019.                 Case -D"don't ",bla "mod.don't saybla" => "mod.say"
  1020.  
  1021.  
  1022.  
  1023. -C  NAME        Change string one to string two
  1024.  
  1025.     SYNTAX      -C"<$>",<$>
  1026.  
  1027.     ARGUMENTS   "<$>" The first string is the "source", the string you want
  1028.                       to change. You MUST place the _first_ string within single
  1029.                       or double quoutes, to separate it from the -C<%><$>[,<$>]
  1030.                       option.
  1031.                 <$>   The second string is the "destination", what you want the
  1032.                       first string to be. Does not have to be quoted.
  1033.  
  1034.     TASK        To change one string into another.
  1035.  
  1036.     FUNCTION    Before any extentions are stripped from the filename, it will
  1037.                 be checked for matches of the given source string
  1038.                 (case-insensitive). If found, the following will happen:
  1039.                 If the source string is of the same length as the dest string
  1040.                 and the found string doesn't match the destination string
  1041.                 exactly (only case insensitive), it is replaced. If the source
  1042.                 string's length differ from the destinations string's, a
  1043.                 replacement always takes place. And the caseing goes on...
  1044.  
  1045.     NOTE #1     This function does not care about extentions, it will conduct
  1046.                 it's search on the whole filename.
  1047.  
  1048.     NOTE #2     You can only have one string substitution per session. If you
  1049.                 specify several, only the last will be given a chance.
  1050.  
  1051.     AFFECTS     None
  1052.  
  1053.     EXAMPLES    Case -C"don't",do "I don't want to live" => "I do want to live"
  1054.                 Case -C"bla.med",mod "bla.med.oofrab"    => "mod.oofrab"
  1055.  
  1056.  
  1057.  
  1058. -k  NAME        Keep letters, digits [and specified]
  1059.  
  1060.     SYNTAX      -k[<c>..]
  1061.  
  1062.     ARGUMENTS   <c> Additional char -- or chars -- to keep.
  1063.  
  1064.     TASK        Keep only letters & numbers, thus removing ugly chars.
  1065.  
  1066.     FUNCTION    This option will strip eccentric characters from your
  1067.                 filenames. It will only keep letters, numbers, dots,
  1068.                 underscores, spaces and all the characters you specify
  1069.                 directly after the -k.
  1070.  
  1071.     NOTE        All characters written earlier (whether it's on the k
  1072.                 or K) will _not_ be remembered. In other words, it's not
  1073.                 possible to "add" more characters to keep.
  1074.  
  1075.     AFFECTS     -K (Keep A-Z, digits [and specified]) -- Turned off.
  1076.  
  1077.     EXAMPLE     Case -k$! "®Ø©! Par$ec-222_ah!" => "Ø! Par$ec222_ah!"
  1078.  
  1079.  
  1080.  
  1081. -K  NAME        Keep A-Z, digits [and specified]
  1082.  
  1083.     SYNTAX      -K[<c>..]
  1084.  
  1085.     ARGUMENTS   <c> Additional char -- or chars -- to keep.
  1086.  
  1087.     TASK        Keep only A-Z & numbers, thus removing ugly chars.
  1088.  
  1089.     FUNCTION    This option will strip eccentric characters from your
  1090.                 filenames. It will only keep the letters A-Z (unlike
  1091.                 its sister-option -k), numbers, underscores, spaces, dots
  1092.                 and all the characters you specify directly after the -K.
  1093.  
  1094.     NOTE        All characters written earlier (whether it's on the k
  1095.                 or K) will _not_ be remembered. In other words, it's not
  1096.                 possible to "add" more chars to keep.
  1097.  
  1098.     AFFECTS     -k (Keep letters, digits [& specified]) -- Turned off.
  1099.  
  1100.     EXAMPLE     Case -K$! "æ®Ø! Par$ec-222_ah!" => "! Par$ec222_ah!"
  1101.  
  1102.  
  1103.  
  1104. -m  NAME        Mutilate chars with ASCI value exceeding 128 to 0-127
  1105.  
  1106.     SYNTAX      -m
  1107.  
  1108.     ARGUMENTS   None
  1109.  
  1110.     TASK        Convert phonems and such to their stem-letters
  1111.  
  1112.     FUNCTION    Since ASCII values of 128-255 are not an international
  1113.                 standard, filenames containing that may come to look strange
  1114.                 on another OS. This option will try to "make the best of it",
  1115.                 so for instance å will become a, Ö => O, é => e etc. All
  1116.                 non-letters will become a dash (-).
  1117.  
  1118.     NOTE #1     -m, -n and -S are currently the _only_ options that turn on
  1119.                 themselves by inverting the current value (by default
  1120.                 zero=NOP). This means that if you write -m -m it will be
  1121.                 turned on and then immediately disabled. This is only useful
  1122.                 if you have the -m written in the env:caseopts file,
  1123.                 and then temporarily want to rename some directories.
  1124.  
  1125.     NOTE #2     This option is performed on the whole filename, including
  1126.                 extentions.
  1127.  
  1128.     AFFECTS     None
  1129.  
  1130.     EXAMPLE     Case -m "tänd på!" => "tand pa!"
  1131.  
  1132.  
  1133.  
  1134. -a  NAME        Add head or tail string to filename
  1135.  
  1136.     SYNTAX      -a(h|t)<$>
  1137.  
  1138.     ARGUMENTS   h   Add a header string
  1139.                 t   Add a tail string
  1140.                 <$> String to add
  1141.  
  1142.     TASK        To add a string to start or end of the filename.
  1143.  
  1144.     FUNCTION    This option is actually very useful -- not only when
  1145.                 you are adding your handle to a group of files, but
  1146.                 when you want to lengthen a filename for some (very
  1147.                 common) reason. I use this a lot. The header is not
  1148.                 placed before any (recognized) prefix, and the tail
  1149.                 not after any suffix. The string to insert is not
  1150.                 inserted if it is already there. This works the same
  1151.                 way as the prefix/suffix adds in that the check is not
  1152.                 case-sensitive; if the string match case-insensitive,
  1153.                 but not case-sensitive, it is not added, but adjusted.
  1154.  
  1155.     NOTE        You can only add one header, and only one tail per
  1156.                 session. It is not possible to add tails or headers to
  1157.                 directories.
  1158.  
  1159.     AFFECTS     None
  1160.  
  1161.     EXAMPLES    Case -ah[LFO] "mod.jungle"      => "mod.[LFO]jungle"
  1162.                 Case -ah[lfo] "mod.[LFO]jungle" => "mod.[lfo]jungle"
  1163.                 Case -ah[lfo] "mod.[lfo]jungle" => [NO CHANGE]
  1164.  
  1165.  
  1166.  
  1167. -r  NAME        Remove head/tail string from filename
  1168.  
  1169.     SYNTAX      -r(h|t)<$>
  1170.  
  1171.     ARGUMENTS   h   Remove a header string
  1172.                 t   Remove a tail string
  1173.                 <$> String to remove
  1174.  
  1175.     TASK        To remove a string from the beginning or end of the filename.
  1176.  
  1177.     FUNCTION    This works exactly as the delete string function, except
  1178.                 that Case will only check the tail or end of the filename
  1179.                 (with extentions stripped) for matches (case insensitive).
  1180.                 This function is mostly implemented so that you can "undo" a
  1181.                 previous add head/tail call.
  1182.  
  1183.     NOTE        You can only remove one header, and only one tail per
  1184.                 session. It is not possible to remove tails or headers
  1185.                 from directories.
  1186.  
  1187.     AFFECTS     None
  1188.  
  1189.     EXAMPLES    Case -rh<LFO> "mod.<LFO>jungle" => "mod.jungle"
  1190.                 Case -rh<lfo> "mod.<LFO>jungle" => "mod.jungle"
  1191.                 Case -rh<lfo> "bla.<LFO>jungle" => [NO CHANGE]
  1192.                                (bla is not recognized as a prefix)
  1193.                 Case -rh<lfo> -E "bla.<LFO>jungle" => "bla.jungle"
  1194.                                (using the -E option, it is)
  1195.  
  1196.  
  1197.  
  1198. -v  NAME        Vomit files to PC-format                                       
  1199.  
  1200.     SYNTAX      -v[<%>]
  1201.  
  1202.     ARGUMENTS   p   Remove the prefixes
  1203.                 s   Remove the suffixes
  1204.                 e   Remove both prefixes and suffixes
  1205.                 -   Only -v keeps the extentions.
  1206.  
  1207.     TASK        Truncate Amiga-filenames to PC-format, 8+3 letters.
  1208.  
  1209.     FUNCTION    If you write -vp, the prefixes will be removed, and the
  1210.                 (recognized) suffixes truncated to 3 letters. The
  1211.                 filename without extentions will be stripped so that
  1212.                 only letters and numbers remain, and then truncated
  1213.                 (if necessary) so that the length does not exceed 8
  1214.                 bytes. All characters are uppercased.
  1215.  
  1216.     NOTE        Beware (if you run this twice on the same file/s) of
  1217.                 truncated extentions, getting suddenly unknown, and
  1218.                 thus inevitably removed...
  1219.                 Beware also of the -k option's zealous work... If a
  1220.                 suffix is not known, then the -k will remove the dot.
  1221.                 A good idea might be to use the -E option...
  1222.  
  1223.     AFFECTS     re/k/u/f/c/w/l
  1224.                 rp  (Remove prefix) Turned on if you specify -vp or -ve
  1225.                 rs  (Remove suffix) Turned on if you specify -vs or -ve
  1226.                 m   (Mutilate asci 128+) Turned on. Write -m AFTER the
  1227.                     -v[<%>] to turn it off again.
  1228.                 k   Turned on with the task to remove _everything_ but
  1229.                     letters and numbers (so it differs a bit from the
  1230.                     normal -k option).
  1231.                 u   (All Uppercase) -- Turned on
  1232.                 l   (All lowercase) -- Turned off
  1233.                 c   (Change cases)  -- Turned off
  1234.                 w   (Each new word uppercase) -- Turned off
  1235.                 f   (First letter uppercase) -- Turned off
  1236.                 
  1237.     EXAMPLES    Case -v  mod.+1_psychedelic!.guide => MOD.1PSYCHED.GUI
  1238.                 Case -vs mod.+1_psychedelic!.guide => MOD.1PSYCHED
  1239.                 Case -vp mod.+1_psychedelic!.guide => 1PSYCHED.GUI
  1240.                 Case -ve mod.+1_psychedelic!.guide => 1PSYCHED
  1241.  
  1242.  
  1243.  
  1244. **********************************************************************
  1245. **                      THE REMAINING OPTIONS                       **
  1246. **              (D, q, n, b, B, S, --, ALL, DISPLAYINFO)            **
  1247. **********************************************************************
  1248.  
  1249. -D  NAME        Disable env:caseopts file
  1250.  
  1251.     SYNTAX      -D
  1252.  
  1253.     ARGUMENTS   None
  1254.  
  1255.     TASK        To ignore the file env:caseopts
  1256.  
  1257.     FUNCTION    The file env:caseopts will, if you specify this
  1258.                 (anywhere on the argument line), not be loaded. The -D
  1259.                 may also be present in the env:caseopts file itself,
  1260.                 which will then be ignored, even though it has been
  1261.                 loaded.
  1262.  
  1263.     AFFECTS     None
  1264.  
  1265.     EXAMPLE     Env:caseopts = "-l"
  1266.                 Case -Pmod    "ARNESUNE" => "mod.arnesune"
  1267.                 Case -Pmod -D "ARNESUNE" => "mod.ARNESUNE"
  1268.  
  1269.  
  1270.  
  1271. -q  NAME        Be Quiet (only list errors)
  1272.  
  1273.     SYNTAX      -q
  1274.  
  1275.     ARGUMENTS   None
  1276.  
  1277.     TASK        To skip the rename listing.
  1278.  
  1279.     FUNCTION    The Case banner and result line will be displayed as
  1280.                 usual. Nothing else, unless an error occurs.
  1281.  
  1282.     AFFECTS     None
  1283.  
  1284.  
  1285.  
  1286. -n  NAME        Neglect the directories
  1287.  
  1288.     SYNTAX      -n
  1289.  
  1290.     ARGUMENTS   None
  1291.  
  1292.     TASK        To completely ignore all directories.
  1293.  
  1294.     FUNCTION    The filematching routine will be told to skip all
  1295.                 directories.
  1296.  
  1297.     NOTE        -n, -m and -S are currently the _only_ options that turn on
  1298.                 themselves by inverting the current value (by default
  1299.                 zero=NOP). This means that if you write -n -n it will be
  1300.                 turned on and then immediately disabled. This is only useful
  1301.                 if you have the -n written in the env:caseopts file,
  1302.                 and then temporarily want to rename some directories.
  1303.  
  1304.     AFFECTS     None
  1305.  
  1306.  
  1307.  
  1308. -b  NAME        Use a buffer when renaming (indirect)
  1309.  
  1310.     SYNTAX      -b
  1311.  
  1312.     ARGUMENTS   None
  1313.  
  1314.     TASK        To read in all the matching files before renaming.
  1315.  
  1316.     FUNCTION    This is on by default, because if it isn't, many operations
  1317.                 on the ram-disk will fail or even crash (due to a flaw in
  1318.                 the OS) and this would scare my users into abandoning Case,
  1319.                 thinking it is clustered with bugs ;)
  1320.                 If the memory for the buffers, holding all the filenames found
  1321.                 so far, should run out, use the -B option. You may want to use
  1322.                 the -B option anyway, so you won't have to experience that
  1323.                 annoying pause in the beginning, initiated when many files are
  1324.                 to be renamed... (See notes about the ram-disk for more info).
  1325.  
  1326.     AFFECTS     -B  Turned off.
  1327.  
  1328.  
  1329.  
  1330. -B  NAME        Don't use a buffer when renaming (direct)
  1331.  
  1332.     SYNTAX      -B
  1333.  
  1334.     ARGUMENTS   None
  1335.  
  1336.     TASK        To rename one file at a time
  1337.  
  1338.     FUNCTION    This is off by default, because if it wasn't, many operations
  1339.                 on the ram-disk would fail or even crash (due to a flaw in
  1340.                 the OS). If you use this switch, you'll reduce memory
  1341.                 fragmentation and usage (though this only goes for big sessions,
  1342.                 lowercaseing a whole partiton for instance). Case will ask
  1343.                 AxeMatch for the next matching file, process it and call AxeMatch
  1344.                 again, until there are no more files. (See notes about the
  1345.                 ram-disk for more info).
  1346.  
  1347.     AFFECTS     -b  Turned off.
  1348.  
  1349.  
  1350.  
  1351. -S  NAME        Simulate caseing, don't rename anything
  1352.  
  1353.     SYNTAX      -S
  1354.  
  1355.     ARGUMENTS   None
  1356.  
  1357.     TASK        To show the user what will happen before it happens.
  1358.  
  1359.     FUNCTION    Everything will go on as usual, except that no files will
  1360.                 be renamed. You'll see the results exactly as you'd see if
  1361.                 you had actually been renaming them. The only exception is
  1362.                 that all possible errors won't be caught. If Case would
  1363.                 strip the number from bla1.txt, renaming it to bla.txt, and
  1364.                 the next file was bla2.txt, it wouldn't be possible to rename
  1365.                 bla2.txt to bla.txt, since it already existed. When simulating
  1366.                 caseing this would not be noticed.
  1367.  
  1368.     NOTE        -S, -m and -n are currently the _only_ options that turn on
  1369.                 themselves by inverting the current value (by default
  1370.                 zero=NOP). This means that if you write -S -S it will be
  1371.                 turned on and then immediately disabled. This is only useful
  1372.                 if you have the -S written in the env:caseopts file, (as if
  1373.                 this was some kind of toy!) and then temporarily want to
  1374.                 actually rename some files...
  1375.  
  1376.     AFFECTS     None
  1377.  
  1378.  
  1379.  
  1380. --  NAME        Stop option parsing
  1381.  
  1382.     SYNTAX      --
  1383.  
  1384.     ARGUMENTS   None
  1385.  
  1386.     TASK        Treat all following chars as filepatterns or keywords
  1387.  
  1388.     FUNCTION    If you specify a filepattern that begins with '-' Case would
  1389.                 interpretate this as an option and produce an error message
  1390.                 in the best case, and something very bad in the worst case.
  1391.                 Specifying a '--' after the last option will tell Case that
  1392.                 everything following the '--' is either a filepattern or a
  1393.                 keyword (ALL/SHOWINFO).
  1394.  
  1395.     AFFECTS     None
  1396.  
  1397.     EXAMPLE     Case -u -ahmed-.txt    => Prefixes (and uppercases) all files
  1398.                                           in the current dir with MED-.TXT !
  1399.                 Case -u -- -ahmed-.txt => -AHMED-.TXT
  1400.  
  1401.  
  1402.  
  1403.     NAME        ALL
  1404.  
  1405.     SYNTAX      ALL (must be placed after all options/filepatterns)
  1406.  
  1407.     ARGUMENTS   None
  1408.  
  1409.     TASK        To recurse into all subdirectories.
  1410.  
  1411.     FUNCTION    By default Case will only process the file or directory
  1412.                 that you specify after the options. If you wish to make
  1413.                 Case recurse into all subdirs (and their subdirs..),
  1414.                 write ALL after the options (and filepattern if any).
  1415.                 It might seem stupid to use -options all the time, except
  1416.                 for this, but I'm so used of using ALL that I made it this
  1417.                 way.
  1418.  
  1419.     AFFECTS     None
  1420.  
  1421.  
  1422.  
  1423.     NAME        SHOWINFO
  1424.  
  1425.     SYNTAX      SHOWINFO (must be placed after all options/filepatterns)
  1426.  
  1427.     ARGUMENTS   None
  1428.  
  1429.     TASK        To list all recognized extentions
  1430.  
  1431.     FUNCTION    First all internally known extentions are listed, then the
  1432.                 environmental (either added in the env:caseopts file or the
  1433.                 commandline). Case then proceeds as usual.
  1434.  
  1435.     AFFECTS     None
  1436.  
  1437.  
  1438.  
  1439. **********************************************************************
  1440. **              Similar programs (last updated 971220)              **
  1441. **    (Short descriptions, where to get them, my impressions etc)   **
  1442. **********************************************************************
  1443.  
  1444. To find out how well my program could compete with other programs I
  1445. took a look at Aminet and found a bunch of renaming utilities...
  1446.  
  1447.     NAME        FixName V1.20beta
  1448.  
  1449.     AUTHOR      Mikael Nordlund
  1450.  
  1451.     RELEASED    930120
  1452.  
  1453.     LOCATION    util/cli/FixName120.lha
  1454.  
  1455.     SIZE        6 KB
  1456.  
  1457.     SHORT       Capitalize first char on filenames in dir[...]
  1458.  
  1459.     COMMENTS    I hadn't seen this almost 5 year old program before.  Very
  1460.                 impressive!  Can recurse into subdirs, have the equivalent
  1461.                 of Case's -u -l -f and -w.  And it even has the option to
  1462.                 open up a small GUI where you can do exactly the same as in
  1463.                 shell, plus save a configuration file.  But it has no
  1464.                 pattern-matching, can only ucase/lcase a-z, plus I'd say
  1465.                 development has ceased :) Freeware.
  1466.  
  1467.  
  1468.  
  1469.     NAME        Arud Converter v2.2
  1470.  
  1471.     AUTHOR      Morten Amundsen
  1472.  
  1473.     RELEASED    93xxxx - 9510xx
  1474.  
  1475.     LOCATION    util/misc/arud220.lha
  1476.  
  1477.     SIZE        29 KB
  1478.  
  1479.     SHORT       Rename multiple files w/src (anims etc)
  1480.  
  1481.     COMMENTS    This program has a nice GUI for renumbering (and copying if
  1482.                 selected) large amount of files, all sharing the same
  1483.                 basename.  The range can be selected and the basename
  1484.                 changed.  Does not recurse into subdirs.  Postcardware,
  1485.                 asm-source included.
  1486.  
  1487.  
  1488.  
  1489.     NAME        LookName 2.2
  1490.  
  1491.     AUTHOR      Philippe Muhlheim
  1492.  
  1493.     RELEASED    940908 - 951023.
  1494.  
  1495.     LOCATION    util/cli/LookName22.lha
  1496.  
  1497.     SIZE        10 KB
  1498.  
  1499.     SHORT       Make filenames lowercase or uppercase and[...]
  1500.  
  1501.     COMMENTS    This is what I wrote about Lookname in Case2.0's doc:
  1502.                 Since the last release I have seen some Case-like programs,
  1503.                 but only one is worth mentioning:  LookName v2.2 by Philippe
  1504.                 Muhlheim.  He released his first Case-clone a year before I
  1505.                 even got the idea.  I give lots of thanks to Philippe for
  1506.                 inspiration and ideas (like the -v option).  LookName works
  1507.                 on all OS, it seems, and has some options that this program
  1508.                 does not (like the possibility to flummy/deflummy filenames,
  1509.                 like "cool" = "çøø1" and such).  But it gives me the
  1510.                 impression of being a program to toy with, rather than to
  1511.                 aide, and it lacks a lot of useful things (v2.2) like the
  1512.                 remove string function, pattern matching, and the mandatory
  1513.                 ALL to recurse.  Also it may CRASH when encountering the
  1514.                 ram-bug (see notes about the ram-disk), at least it did for
  1515.                 me the first time I tried it, not knowing my program
  1516.                 couldn't handle that either :) Lookname is Freeware.
  1517.  
  1518.  
  1519.  
  1520.     NAME        CExt V40.2
  1521.  
  1522.     AUTHOR      Chris De Maeyer
  1523.  
  1524.     RELEASED    941016-970201
  1525.  
  1526.     LOCATION    util/cli/cext402.lha
  1527.  
  1528.     SIZE        10 KB
  1529.  
  1530.     SHORT       Utility to change/delete/renumber filenames
  1531.  
  1532.     COMMENTS    This program can only handle 1024 files, but that makes
  1533.                 sense since it does not recurse.  It can delete or rename
  1534.                 suffixes and renumber files.  Basename and range can be set.
  1535.                 Freeware.
  1536.  
  1537.  
  1538.  
  1539.     NAME        ARen 1.4
  1540.  
  1541.     AUTHOR      Mendez Marc
  1542.  
  1543.     RELEASED    941117
  1544.  
  1545.     LOCATION    util/sys/Aren14.lha
  1546.  
  1547.     SIZE        12 KB
  1548.  
  1549.     SHORT       Extension of 'Rename', replaces patterns[...]
  1550.  
  1551.     COMMENTS    A small gui-less tool that seems to do the same thing as
  1552.                 Case's -C" option, except that it does not recurse.  But it
  1553.                 lets the user specify if the replacing should be
  1554.                 case-sensitive or not.  Does not recurse into subdirs.
  1555.                 Freeware, c-source included.
  1556.  
  1557.  
  1558.  
  1559.     NAME        MultiRename v1.0
  1560.  
  1561.     AUTHOR      Daniel S. Milling Jr.
  1562.  
  1563.     RELEASED    941208
  1564.  
  1565.     LOCATION    util/misc/MRename1.lha
  1566.  
  1567.     SIZE        34 KB
  1568.  
  1569.     SHORT       Rename/renumber lists of files.
  1570.  
  1571.     COMMENTS    Another renumbering program, with an impressive GUI (judging
  1572.                 from the size of the program and the doc).  The range and
  1573.                 basename can be set.  I haven't seen it though, since it
  1574.                 crashes on my 060.  Shareware.
  1575.  
  1576.  
  1577.  
  1578.     NAME        AutoRename V1.0
  1579.  
  1580.     AUTHOR      Francesco Gambino
  1581.  
  1582.     RELEASED    950111
  1583.  
  1584.     LOCATION    util/sys/AutoRen_v10.lha
  1585.  
  1586.     SIZE        18 KB
  1587.  
  1588.     SHORT       AutoRename is a utility to rename a lot[...]
  1589.  
  1590.     COMMENTS    This program is buggy, and in italian.  Judging from the 4
  1591.                 short examples in the doc, it adds an incremented number
  1592.                 together with an optional headerstring to all the files that
  1593.                 match.  I believe I have some modules by this guy...  they
  1594.                 are a lot better than his program ;) Freeware, I think.
  1595.  
  1596.  
  1597.  
  1598.     NAME        RenumSeq.rexx 1.0
  1599.  
  1600.     AUTHOR      Christoph Mayer
  1601.  
  1602.     RELEASED    950114
  1603.  
  1604.     LOCATION    gfx/edit/RenumSeq.lha
  1605.  
  1606.     SIZE        1 KB
  1607.  
  1608.     SHORT       This ARexx-script renumbers or renames[...]
  1609.  
  1610.     COMMENTS    ARexx script to renumber filenames.  Very primitive, but I
  1611.                 guess it does its job.  Freeware.
  1612.  
  1613.  
  1614.  
  1615.     NAME        No Pain Rename 1.0
  1616.  
  1617.     AUTHOR      Travis Riggs
  1618.  
  1619.     RELEASED    9507xx
  1620.  
  1621.     LOCATION    util/sys/nopainrename.lha
  1622.  
  1623.     SIZE        140 KB
  1624.  
  1625.     SHORT       Batch filename renaming utility
  1626.  
  1627.     COMMENTS    A simple (yet huge) renumbering program, with an awful GUI.
  1628.                 Basename and range can be set.  Shareware.
  1629.  
  1630.  
  1631.  
  1632.     NAME        UnderScore 1.0
  1633.  
  1634.     AUTHOR      Braneloc
  1635.  
  1636.     RELEASED    9508xx (Recompiled 970619)
  1637.  
  1638.     LOCATION    util/cli/underscore.lha
  1639.  
  1640.     SIZE        23 KB
  1641.  
  1642.     SHORT       Removes spaces from filenames
  1643.  
  1644.     COMMENTS    Hmm...  of all the programs I've tried, this is by far the
  1645.                 most pathetic!  It's 35 kb, and all it does (no options, not
  1646.                 even filepattern!) is the same thing as writing Case -t ALL.
  1647.                 It does recurse.  In fact, it always recurses!!  Maybe you
  1648.                 think I'm a bit harsh on the programmer, but...  Get this...
  1649.                 he wants you to pay him £10 for it!!!  The underscore.doc is
  1650.                 not a doc but a registration form!!  I'm apalled...
  1651.  
  1652.  
  1653.  
  1654.     NAME        UpperName 1.0
  1655.  
  1656.     AUTHOR      Franck Aniere
  1657.  
  1658.     RELEASED    950822
  1659.  
  1660.     LOCATION    util/batch/UpperName.lha
  1661.  
  1662.     SIZE        6 KB
  1663.  
  1664.     SHORT       Upper case filenames
  1665.  
  1666.     COMMENTS    This is the most primitive of the Case-clones I've seen.  It
  1667.                 can only uppercase one file at a time...  Freeware.
  1668.  
  1669.  
  1670.  
  1671.     NAME        LowUp 1.0
  1672.  
  1673.     AUTHOR      Franck Aniere
  1674.  
  1675.     RELEASED    95082x
  1676.  
  1677.     LOCATION    util/cli/LowUp_Upd.lha
  1678.  
  1679.     SIZE        10 KB
  1680.  
  1681.     SHORT       Upper/Lower case filenames
  1682.  
  1683.     COMMENTS    This an update of the most primitive of the Case-clones I've
  1684.                 seen.  Apparently, after the author had found out some
  1685.                 people did not like uppercase only filenames, he changed the
  1686.                 name from Uppername to LowUp.  It can now both uppercase and
  1687.                 lowercase _one_ filename at a time.  He has included a GUI
  1688.                 version as well though (written by one of the program's fans
  1689.                 (!)) which uses the reqtools library and is quite nice; but
  1690.                 it is still as limited.  All freeware.
  1691.  
  1692.  
  1693.  
  1694.     NAME        Npmv 1.0
  1695.  
  1696.     AUTHOR      Stefan Le Breton
  1697.  
  1698.     RELEASED    960122
  1699.  
  1700.     LOCATION    util/sys/npmv.lha
  1701.  
  1702.     SIZE        2 KB
  1703.  
  1704.     SHORT       Rename without(!) pattern matching
  1705.  
  1706.     COMMENTS    All this program does is to rename files whose names
  1707.                 contains characters used by the dos pattern matching.
  1708.                 Freeware.
  1709.  
  1710.  
  1711.  
  1712. Phew... so far I've found no program that I've been forced to admit is
  1713. better than Case. Now only one remain to test... The filesize worries
  1714. me, hmm.. 341 kb!? Aha... no need to worry :) Because, it is...
  1715.  
  1716.     NAME        No Pain Rename 2.0
  1717.  
  1718.     AUTHOR      Travis Riggs
  1719.  
  1720.     RELEASED    1996
  1721.  
  1722.     LOCATION    gfx/misc/rename2u.lha
  1723.  
  1724.     SIZE        174 KB
  1725.  
  1726.     SHORT       Rename multiple files with ease!
  1727.  
  1728.     COMMENTS    Well, the GUI has improved, A LOT.  And there are many new
  1729.                 features, but it is still only intended for renumbering
  1730.                 purposes.  However, if you want all the new features you
  1731.                 must pay $10 to the author, as No Pain Rename is still
  1732.                 shareware.  I really hate it when people release their
  1733.                 programs as shareware, especially cut-down versions.  But
  1734.                 that's just me...
  1735.  
  1736.  
  1737.  
  1738.     NAME        Ename v2.0
  1739.  
  1740.     AUTHOR      Rafaî Mantiuk
  1741.  
  1742.     RELEASED    960618
  1743.  
  1744.     LOCATION    util/cli/EName20.lha
  1745.  
  1746.     SIZE        8 KB
  1747.  
  1748.     SHORT       Rename many files.
  1749.  
  1750.     COMMENTS    This cli-command is quite powerful when it comes to
  1751.                 substituting or removing strings from filenames.  It can
  1752.                 also lowercase or uppercase.  I didn't find it too easy to
  1753.                 understand though, and it do also have a simulation option,
  1754.                 so as to give the user a chance to see what will happen if
  1755.                 he starts the program...  (Actually, after seeing this in
  1756.                 another program as well, I implemented it in this version of
  1757.                 Case!) One thing that impressed me was that it won't be
  1758.                 confused if one file will be given the same name as another
  1759.                 file (but which won't have this name after the operations
  1760.                 has been performed).  Does not recurse into subdirs.
  1761.                 Postcard/emailware.
  1762.  
  1763.  
  1764.  
  1765.     NAME        MRename 1.3
  1766.  
  1767.     AUTHOR      Martin Steigerwald
  1768.  
  1769.     RELEASED    960714-960921
  1770.  
  1771.     LOCATION    util/cli/mrename.lha
  1772.  
  1773.     SIZE        7 KB
  1774.  
  1775.     SHORT       Renames files in a flexible way (1.3)
  1776.  
  1777.     COMMENTS    This is a nice program that is quite like Case.  It can
  1778.                 recurse into subdirs, uppercase, lowercase, uppercase first
  1779.                 letter in every word and change extentions to a specified
  1780.                 name.  It also lets you specify if you want only dirs or
  1781.                 only files to be renamed, and there's also a testmode.  But
  1782.                 don't try this program on the ram-disk...  luckily I could
  1783.                 CTRL-C it out of its endless loop...  (See notes about the
  1784.                 ram-disk.) Freeware.
  1785.  
  1786.  
  1787.  
  1788.     NAME        RenameIt 1.0
  1789.  
  1790.     AUTHOR      Dante/Oxyron Software
  1791.  
  1792.     RELEASED    960731
  1793.  
  1794.     LOCATION    util/sys/RenameIt.lha
  1795.  
  1796.     SIZE        27 KB
  1797.  
  1798.     SHORT       Multiple file rename Tool
  1799.  
  1800.     COMMENTS    This is a quite primitive program for manipulating
  1801.                 filenames.  It seems to target extentions only, at least
  1802.                 that's what I could gather after skimming through the 3kb
  1803.                 doc...  It has a GUI though.  I don't think that's
  1804.                 appropriate for a program like this, but I guess some people
  1805.                 would prefer it.
  1806.  
  1807.  
  1808.  
  1809.     NAME        KRenamer 1.1
  1810.  
  1811.     AUTHOR      Kordi/Blabla
  1812.  
  1813.     RELEASED    970420
  1814.  
  1815.     LOCATION    util/cli/2b_KRenamer11.lha
  1816.  
  1817.     SIZE        9 KB
  1818.  
  1819.     SHORT       Changes name of all files in directory..
  1820.  
  1821.     COMMENTS    Quite nice gui-less program it seems, which lets one rename
  1822.                 all (or parts of) the files in a directory into the same
  1823.                 name, only separated by numbers.  That's currently all it
  1824.                 does though, even if the doc promises more in future
  1825.                 releases.  Does not recurse into subdirs.  Freeware.
  1826.  
  1827.  
  1828.  
  1829.     NAME        MRenfix.rexx 1.0a
  1830.  
  1831.     AUTHOR      Anders Nordby
  1832.  
  1833.     RELEASED    1996
  1834.  
  1835.     LOCATION    util/sys/mrenfix.lzh
  1836.  
  1837.     SIZE        2 KB
  1838.  
  1839.     SHORT       Changes pre-/suffixes in filenames
  1840.  
  1841.     COMMENTS    A rexx script to remove/add/change suffixes and/or prefixes.
  1842.                 Does pattermatching and recurses into subdirs.  Requesters
  1843.                 pop up if you forget some parameters.  And you'll be
  1844.                 prompted for the extentions to add/remove.  But when the
  1845.                 process finally starts, there's no indication as to what's
  1846.                 going on...
  1847.  
  1848.  
  1849. To sum up... Even Case 1.0 could do more than any of these programs
  1850. (possibly with the exception of LookName). But there seems to be a high
  1851. demand for renumbering programs. I have never found use for this myself, but
  1852. I'll probably include this in the next release.
  1853.  
  1854.  
  1855.  
  1856. **********************************************************************
  1857. **                         -+- THE END -+-                          **
  1858. **      (Notes about the ram-disk, contact me, history etc...)      **
  1859. **********************************************************************
  1860.  
  1861. NOTES ABOUT THE RAM-DISK
  1862.  
  1863.     Some 1.5 year ago, Axehandle reported a bug. Using this and that
  1864.     option on these and those files would bring Case into an endless
  1865.     loop of renamings. I thought he had a lot of nerve blaming me
  1866.     for this, when it obviously was his filematching routine that
  1867.     was flawed! I tried to reproduce the bug, but it worked on my
  1868.     machine. He persisted -- "your program is buggy!" -- and we
  1869.     almost got into an argument...
  1870.  
  1871.     I looked deeper into this, and found that I COULD reproduce the
  1872.     bug, but only when I used Case on the ram-disk. Some debugging
  1873.     revealed that his filematching routines would pass me the same
  1874.     file over and over again... Aha! With a malicious, triumphant
  1875.     smile, I called Axehandle... "Like I suspected, it IS your bug!!"
  1876.  
  1877.     But he wouldn't have it that way. "If it isn't your fault, then
  1878.     it must be a bug in the OS." he concluded calmly. "Yeah right!!"
  1879.     But... he was right. I don't remember exactly under what
  1880.     circumstances it happens, but I think that when a file change
  1881.     name, the OS will notice "oh, there's a file I didn't see
  1882.     before! better pass it.." and so I get it again. Rename it
  1883.     again, and the OS... "Oh a sandwich! I like sandwiches..."
  1884.  
  1885.     I noticed the same thing a few days ago, when I was, hmm,
  1886.     watching some pictures on the ram-disk, with viewtek #?.
  1887.     When I deleted a picture that I had just viewed, it would
  1888.     start over from the beginning, showing all the pictures that
  1889.     I had already seen.
  1890.  
  1891.     Anyway, no need to worry about this in Case! With a lot of pain
  1892.     I added the default option to read in all matching files in a
  1893.     buffer, and then rename them. More about this in the text about
  1894.     the -b and -B options.
  1895.  
  1896.  
  1897.  
  1898. BUGS???
  1899.  
  1900.     Very likely in this release!
  1901.  
  1902.  
  1903.  
  1904. HISTORY
  1905.  
  1906.     v1.0 (950809)
  1907.  
  1908.         ** The first release.
  1909.  
  1910.  
  1911.     v2.0 (960320)
  1912.  
  1913.         ** Real filematching implemented, thanks to Axehandle. It
  1914.         uses some 2.04 functions, so Case now only works with OS 2.04++
  1915.  
  1916.         ** Lots of changes, too many to write down. No one used
  1917.         the first version anyway...
  1918.  
  1919.  
  1920.     v2.1 (971221)
  1921.  
  1922.         ** Well... I *still* haven't got any indication that I have one
  1923.         single user, after more than two years since the first release!
  1924.         Yet I code on...
  1925.  
  1926.         ** Renamed almost all options, in a vain attempt to be more
  1927.         consequent, and make the names easier to remember:
  1928.  
  1929.             -i[s|p] was renamed to -I[e|s|p] (Don't ignore extentions when caseing)
  1930.             -I[S|P] was renamed to -i[e|s|p] (Ignore extentions when caseing)
  1931.             -EU was renamed to -u(e|s|p) (Make Extention/Suffix/Prefix uppercase)
  1932.             -EL was renamed to -l(e|s|p) (Make Extention/Suffix/Prefix lowercase)
  1933.             -S<$> was renamed to -as<$> (Add specified suffix)
  1934.             -P<$> was renamed to -ap<$> (Add specified prefix)
  1935.             -s[<$>] was renamed to -rs[<$>] (Remove [specified] suffix)
  1936.             -p[<$>] was renamed to -rp[<$>] (Remove [specified] prefix)
  1937.             -r<c>.. was renamed to -d<c>.. (Delete specified char[s])
  1938.             -R<$>,.. was renamed to -D<$>,.. (Delete specified string[s])
  1939.             -e[s|p] was renamed to -s[e|s|p] (Swap extentions [or only Suffixes/Prefixes])
  1940.             -c[p|s]<#> was renamed to -L[e|s|p]<#> (Set Extention/Suffix/Prefix maxlength)
  1941.             -o was renamed to -E (Don't use default Extentions)
  1942.             -O was renamed to -e (Accept default Extentions only)
  1943.             -o<$>,.. was renamed to -E<$>,.. (Only accept specified Extentions)
  1944.             -O<$>,.. was renamed to -e<$>,.. (Only accept default Extentions & specified)
  1945.  
  1946.         ** Prefix options that default to operating on extentions, but
  1947.         that can be made to operate on only prefixes/suffixes, now accept
  1948.         e (for both) as well as the usual p (prefixes only) and s
  1949.         (suffixes only)
  1950.  
  1951.         ** All specified extentions are now added to the list of
  1952.         recognized extentions. So if you want to remove the suffix .bla,
  1953.         you only need to write -rsbla, and don't worry about whether bla
  1954.         is a recognized suffix or not.
  1955.  
  1956.         ** Any given extention will adjust the extention maxlenght, if
  1957.         (and only if) it is exceeded.
  1958.  
  1959.         ** If a filepattern contains spaces, it now must have single or
  1960.         double quotes surrounding it.
  1961.  
  1962.         ** The delete chars functions are no longer case-sensitive. If you
  1963.         want to remove all ö:s, -dö will remove ö:s as well as Ö:s.
  1964.  
  1965.         ** It is now possible to specify characters to delete on several
  1966.         places, without having the previous chars forgotten.
  1967.  
  1968.         ** If an extention operation is selected, but no extention was
  1969.         modified, or even found, Case will now display a little reminder
  1970.         that maybe this was because you wanted to process files with
  1971.         alien extentions, and maybe you should try the -e option etc. This
  1972.         is so you won't think Case is flawed, like even I myself has
  1973.         thought several times! So easy to forget...
  1974.  
  1975.         ** Made an indirect mode to read all the filenames into a
  1976.         buffer, and then rename from that. Added the options -b and -B
  1977.         to select between direct and indirect mode.
  1978.  
  1979.         ** Added -ae, add specified extention.
  1980.  
  1981.         ** Added -r(h|t)<$>, remove head or tail string
  1982.  
  1983.         ** Added -C"<$>",<$> -- change string one to string two.
  1984.  
  1985.         ** Added -C<%>[<$>,]<$>, change extentions [from this] to that.
  1986.  
  1987.         ** Added -S, simulate caseing.
  1988.  
  1989.         ** Added a new caseing operation, -c, change all cases.
  1990.  
  1991.         ** Added -m, mutilate ASCII 128-255 into 45-127
  1992.  
  1993.         ** The -v (vomit) option now turns on -m, and it will no longer
  1994.         remove the prefixes by default. You'll have to write -vp if you
  1995.         want those removed as well.
  1996.  
  1997.         ** The caseing operations (-l, -u, -c, -w, -f) will now operate
  1998.         on extentions only, if they are followed by p, s or e.
  1999.  
  2000.         ** A few minor bugs corrected
  2001.  
  2002.         ** More extentions are recognized...
  2003.            qt, gz, pi
  2004.            c++, cpp, arj, obj, env, mov, avi, jpg, tex, p61
  2005.            tar, htm, man, mpg, mp3, bz2, tgz, lzh
  2006.            jpeg, gzip, html
  2007.            amiga, prefs
  2008.            symmod
  2009.  
  2010.  
  2011.     v2.2 (980127)
  2012.  
  2013.         ** Two happy Case users revealed themselves. Thanks Trevor & mr Bouwhuis!
  2014.  
  2015.         ** Above mentioned new extentions were actually only added to the doc.
  2016.            I forgot to add them in the source. Apart from all those new
  2017.            extentions, there's three more: xm, s3m and rexx.
  2018.  
  2019.         ** Corrected flaw in the argument parsing. Case wouldn't report a
  2020.            syntax error when several source-names were entered. (This is not
  2021.            yet allowed)
  2022.  
  2023.         ** When in recursive mode, if a directory-name got renamed by Case,
  2024.            (so the characters actually changed, not only the cases) any
  2025.            files in that directory would not be found. Solved this by
  2026.            letting the pattern matching routine pass Case the directory names
  2027.            when they were leaved, instead of when they were entered.
  2028.  
  2029.         ** Whenever a file in the search path could not be locked for some
  2030.            reason, case would abort the whole operation with "can't find file
  2031.            or path!" If in the default buffered mode, no files would ever be
  2032.            renamed. Now, whenever the filematching routine cannot lock a file,
  2033.            Case will look at the name to determine if the user wanted that
  2034.            file to be renamed. (If, for instance, the user wanted to uppercase
  2035.            all filenames, and this file already was uppercased, there would be
  2036.            nothing to worry about.) If he didn't the file will simply be skipped.
  2037.            If he did, the fail counter will be incremented and the message "can't
  2038.            lock xxx because object is in use" will be displayed.
  2039.  
  2040.         ** The -C" option (change string 1 to string 2) was flawed.
  2041.            case21 -C"bl",bl bla   would result in  renaming bla to bla. Also:
  2042.            case21 -C"bl",bla bla  would not rename bla to blaa, since Case thought
  2043.            this had already been done.
  2044.  
  2045.  
  2046.     v2.3 (980301)
  2047.  
  2048.         ** Two more Case users choose to step forward. Thanks Dobbin & Niels!
  2049.  
  2050.         ** Fixed flaw: Case -l HIRESDOOM(PPC).PNG resulted in "Can't find file
  2051.            or path!". This was because any filespecification that contained
  2052.            wildcards (like the paranthesis in this example) was assumed to be
  2053.            a searchpattern. Case will now begin by trying to lock the exact
  2054.            given pattern, and if it exists it won't enter the match mode but
  2055.            only pass this file (or directory). Thanks to Niels de Koning for
  2056.            reporting this!
  2057.  
  2058.         ** Added the extention 'png'
  2059.  
  2060.         ** Found bug in AxeMatch! Case -u dirname ALL would make AxeMatch think
  2061.            that dirname was a filename! And it would lock the directory dirname
  2062.            resided in and start to recursively look for files matching dirname.
  2063.            If dirname was in the root of a partition, all files on that partition
  2064.            would be examined! Ah well. This is the last thing Axehandle added to
  2065.            his source: "As far as I can tell, everything works, but that's about
  2066.            as much I can promise. I've coded the additions during an euphoric
  2067.            codermongo intoxication, which is known to inflict bugs."
  2068.  
  2069.         ** Case -u dirname ALL will now uppercase everything in dirname as well
  2070.            as dirname itself. Thanks to Niels de Koning for suggesting this!
  2071.  
  2072.         ** Specified filenames not containing wildcards had to be specified
  2073.            EXACTLY right. So to uppercase 'fIlE' you had to write Case -u fIlE.
  2074.            Fixed this.
  2075.  
  2076.         ** Rewrote from scratch the routine that parses the argumentline (except
  2077.            the part that interpretates the options). Please report any unexpected
  2078.            behaviour!
  2079.  
  2080.         ** It's now possible to give several filename/pattern specifications,
  2081.            for instance Case -l file1 file2 file3 dir1/#?.txt would uppercase
  2082.            the three files file1-3 as well as all files ending with .txt in dir1.
  2083.  
  2084.         ** The env:caseopts file can now contain newlines. They will be converted
  2085.            to spaces. (And as usual, no spaces are allowed between the comma
  2086.            separators.)
  2087.  
  2088.         ** Added the option -- which will abort the option parsing. If you
  2089.            specify a filepattern that begin with - you need to use this
  2090.            to prevent Case from confusing the filepattern with an option.
  2091.  
  2092.         ** Added the keyword SHOWINFO. It will list all recognized extentions,
  2093.            internal as well as environmental.
  2094.  
  2095.         ** Decreased the program size with about 1400 bytes by moving some
  2096.            partly uninitialized data into the BSS section and by letting
  2097.            AxeMatch access most of its data relative to a5.
  2098.  
  2099.  
  2100.     v2.4 (980303)
  2101.  
  2102.         ** Case v2.3 featured a serious bug which would cause deadlocks (in
  2103.            most cases) when specifying one or more filenames without
  2104.            wildcards. It worked perfectly during the 24 hours I was bugtesting
  2105.            it though, so I feel the whole thing is a bit unfair. Thanks to
  2106.            Niels de Koning & Finn Nielsen for reporting this, and my
  2107.            apologies to the ones whose Amigas I crashed!
  2108.  
  2109.  
  2110.  
  2111. THE PHUTURE
  2112.  
  2113.     Many rats has left the ship... happily eating Bill Gates' cheese,
  2114.     the cheese they once loved to curse. Well, like I use to think on the
  2115.     last night of the Roskilde festival, as a large amounts of people
  2116.     head home (even though there's one festival night left!):
  2117.     -- Only the cool people stay...
  2118.  
  2119.     I will stay, and continue releasing updates on this program. I have
  2120.     a few ideas in mind... The most important one is to implement an undo
  2121.     function. If Case should chance to really fuck up my files, I'd like
  2122.     to write Case UNDO, to restore the names. Also all known extentions
  2123.     should perhaps be flagged as prefix only, suffix only or any of the two.
  2124.  
  2125.  
  2126.  
  2127. DISCLAIMER
  2128.  
  2129.     If you are interested in the disclaimer, then contact me.
  2130.  
  2131.  
  2132.  
  2133. CONTACT ME...
  2134.  
  2135.     If you want an update made, have bug-reports, suggestions, anything..
  2136.  
  2137.     EMail: c9713363@alinga.newcastle.edu.au
  2138.  
  2139.     This address is at least valid to the end of april 1998.
  2140.     After that, use: blodskam@hotmail.com
  2141.  
  2142.     I have, btw, used the handle Parsec since the summer of 1991. I know
  2143.     many people think handles are silly (albeit /nicks are "kewl"), but...
  2144.     It's a silly life! Take it seriousley, and *you* are the fool!
  2145.  
  2146.  
  2147.  
  2148. SPECIAL THANKS...
  2149.  
  2150.     * My "menthor" Thomas Richter, for helping me whenever I despair...
  2151.     * Aaron Scott, for a lot of things...
  2152.     * Phil @ AmigaGenius for giving birth to my hd-farm.
  2153.  
  2154.